SQLVantage:告別 Oracle EBS 報表開發地獄,以純 SQL 驅動的現代化報表生成工具
專案資訊
- 專案名稱:SQLVantage
- 專案簡介:SQLVantage 是一款以純 SQL 驅動的輕量級報表生成與資料應用工具。旨在解決傳統企業級 ERP(特別是 Oracle EBS R12)報表開發流程繁瑣、維護成本高昂的痛點。只需編寫標準 SQL 語法,即可自動生成具備動態篩選、視覺化圖表與互動式下鑽功能的現代化 Web 報表。
- 目前開發狀態:v1.0.2(核心功能已穩定,支援主流 DB 直連,持續優化前端互動元件)
必要連結
實作內容
1. 開發動機:被 Oracle EBS 報表折磨的工程師日常
有維護過 Oracle E-Business Suite (EBS) R12 的工程師一定懂這個痛:「只是想在報表多加兩個欄位,為什麼要搞一整天?」
傳統 EBS 報表開發(例如使用 RDF / Reports Builder 或 XML (BI) Publisher),開發者必須經過極度繁瑣的步驟:
- 撰寫與除錯 SQL / Data Template。
- 用 RTF 格式在 Word 裡拉欄位、畫表格,處理各種跑版問題。
- 登入 EBS 前端註冊 Executable 與 Concurrent Program。
- 將樣板檔上傳至伺服器並掛載至責任別(Responsibility)。
- 每次修改都需要重複「上傳-重新執行-排查錯誤」的迴圈。
在追求敏捷開發的今天,這種傳統模式極大地拖慢了資料交付的效率。為了徹底擺脫這種「為了呈現資料而做一堆無用功」的困境,我們決定開發 SQLVantage——讓報表開發回歸到最純粹的本質:寫好 SQL,剩下的交給工具。
2. 使用的技術架構
為了確保高效能、跨平台以及對傳統企業資料庫的良好相容性,SQLVantage 採用了以下架構:
- 前端 (Frontend):React.js + Tailwind CSS + ECharts
- 提供響應式(Responsive)介面,自動將 SQL 查詢結果轉化為可排序、可篩選的表格與動態圖表。
- 後端 (Backend):Go (Golang) / Node.js (可依實際技術棧調整)
- 利用 Go 的高效能併發特性與輕量化記憶體佔用,快速處理大型 Dataset 的 Stream 傳輸與 JSON 轉換。
- 資料庫支援 (Database Connectivity):
- 原生支援 Oracle Database (OCI / godror),並預計透過通用驅動相容 PostgreSQL、MySQL、SQL Server 等主流 RDBMS(其他資料庫支援暫未完成)。
+------------------+ +-------------------+ +-----------------------+
| SQLVantage Web | <---> | SQLVantage Core | <---> | Oracle EBS DB |
| (React/ECharts) | JSON | (Go API Server) | OCI | (AP/AR/GL/INV Tables)|
+------------------+ +-------------------+ +-----------------------+
3. 開發過程中解決的技術難題
難題一:如何在不寫 RTF 樣板的前提下,動態解析 SQL 並渲染 UI?
解法:SQLVantage 在後端執行 SQL 時,會預先擷取資料庫回傳的 MetaData(欄位名稱、資料型態、長度)。前端元件接收到 MetaData 後,會自動映射為對應的 Data Grid 元件,並自動判斷數字型態(靠右並提供加總)、日期型態(提供區間篩選器)與字串型態。
難題二:Oracle EBS 的列級安全(RLS / Multi-Org)權限隔離
解法:直連 EBS 資料庫時,若直接查詢屏蔽權限的視圖(View)常會抓不到資料。SQLVantage 提供了 Pre-Execution Hook 機制,在執行主要查詢 SQL 前,會先自動注入並執行 EBS 的環境初始化 Package:
BEGIN
fnd_global.apps_initialize(
user_id => :user_id,
resp_id => :resp_id,
resp_appl_id => :resp_appl_id
);
END;
這讓開發者既能享受 SQLVantage 的快速開發,又能完美遵循 EBS 原生的權限控管邏輯。
難題三:巨量資料(如 GL 總帳明細)查詢時的前端卡頓
解法:前端引入虛擬列表(Virtual Scrolling)技術,僅渲染可視區域內的 DOM 節點;後端則結合游標分頁(Cursor-based Pagination)與 Chunk 串流傳輸,成功將百萬級資料列的報表首屏加載時間控制在 1 秒以內。
結語
SQLVantage 的核心理念是 「Keep It Simple, Drive by SQL」。它並非要完全取代追求極致列印格式的單據類報表,但對於 90% 的營運分析、財務對帳與管理儀表板,SQLVantage 能夠將開發週期從「天級」直接縮短至「分鐘級」。
歡迎大家試用並提出寶貴建議。